package com.oa.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;


import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @author wzm
 * @create 2023-10-31 11:56
 * project_name:web2310
 */
//专门用于给jdbc操作获取连接对象的类
public class JDBCUtils {
    //声明为全局变量
  private static DataSource dataSource = null;

    static {
        try {
            //加载德鲁伊的配置信息
            Properties properties = new Properties();
            properties.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //父类类型 子类对象 获取德鲁伊的实现的datasource对象
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据连接的方法
     * @return 获取到的数据库连接对象
     */
    public static Connection getConn(){
        try {
            //调用获取连接的方法获取连接对象
            return  dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;//没有获取成功返回null
    }

    /**
     * 关闭资源的方法
     * @param connection 传入需要关闭的连接对象作为参数
     */
    public static void closeConn(Connection connection, PreparedStatement ps, ResultSet rs){
        try {
            if(rs != null){
                rs.close();
            }

            if(ps != null){
                ps.close();
            }

            if(connection != null){
                //如果连接对象不为null 关闭连接
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}
